![]() | CORRESPONDENCIA CURRY-HOWARD |
x
es un elemento de una clase C
y su tipo correspondiente es t
, se cumple la propiedad:
〈( x/t ↔ x∈C )〉
x/t
se lee “x
es t
” o “x
tiene la propiedad t
”
x/t
indica que x
es de tipo t
D={0…9}
es el conjunto de todos los dígitos, y llamamos d
a su tipo correspondiente, se tiene la equivalencia condicional
(〈 x/d ↔ x∈D )〉
t
, eso implica la proposición t≠∅
(t
está habitado o t
no está vacío). En MENTAL, si un elemento x
es de tipo t
, se cumple x/t
y ((x/t)? = α)
.
x
tiene el predicado t
, x
es de tipo t
. Por ejemplo,
Pepe/hombre
. Pepe
tiene el predicado hombre
y Pepe
es un tipo de hombre
.
3/entero
. 3
es un tipo de entero y tiene el predicado entero
.
3/d
. 3
es un tipo de d
(dígito) y tiene el predicado d
.
α
, que corresponde al predicado “existe” y que sustituye a la fórmula o proposición lógica V (verdadero). El tipo nulo (o expresión nula) es θ
, que corresponde al predicado “no existe” y que sustituye a la fórmula lógica F (falso). Estos tipos universales de programación son los mismos que los tipos lógicos, es decir, se unifican los tipos lógicos y los tipos de programación. Son los mismos.
f*V
. La verdad es un predicado, por ejemplo, x/V
o x/(0.7*V)
.
〈( x/A → y/B → (x→y)/(A→B) )〉
.
x
es de tipo A
e y
es de tipo B
, entonces x→y
es de tipo A→B
. Análogamente para la conjunción y la disyunción:
〈( x/A → y/B → (x∧y)/(A∧B) )〉
〈( x/A → y/B → (x∨y)/(A∨B) )〉